home *** CD-ROM | disk | FTP | other *** search
/ CD/PC Actual 31 / PC Actual CD 31.iso / dists / SRC / SLIBEXEC.AA / SLIBEXEC / libexec / atrun / gloadavg.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-20  |  2.0 KB  |  73 lines

  1. /* 
  2.  *  gloadavg.c - get load average for Linux
  3.  *  Copyright (C) 1993  Thomas Koenig
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. The name of the author(s) may not be used to endorse or promote
  11.  *    products derived from this software without specific prior written
  12.  *    permission.
  13.  *
  14.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
  15.  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  16.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  17.  * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
  18.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  19.  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  20.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  21.  * THEORY OF LIABILITY, WETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  22.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  23.  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  24.  */
  25.  
  26. #ifndef lint
  27. static const char rcsid[] =
  28.     "$Id: gloadavg.c,v 1.4 1997/11/20 07:21:55 charnier Exp $";
  29. #endif /* not lint */
  30.  
  31. #ifndef __FreeBSD__
  32. #define _POSIX_SOURCE 1
  33.  
  34. /* System Headers */
  35.  
  36. #include <stdio.h>
  37. #else
  38. #include <stdlib.h>
  39. #endif
  40.  
  41. /* Local headers */
  42.  
  43. #include "gloadavg.h"
  44.  
  45. /* Global functions */
  46.  
  47. void perr(const char *a);
  48.  
  49. double
  50. gloadavg(void)
  51. /* return the current load average as a floating point number, or <0 for
  52.  * error
  53.  */
  54. {
  55.     double result;
  56. #ifndef __FreeBSD__
  57.     FILE *fp;
  58.     
  59.     if((fp=fopen(PROC_DIR "loadavg","r")) == NULL)
  60.     result = -1.0;
  61.     else
  62.     {
  63.     if(fscanf(fp,"%lf",&result) != 1)
  64.         result = -1.0;
  65.     fclose(fp);
  66.     }
  67. #else
  68.     if (getloadavg(&result, 1) != 1)
  69.         perr("error in getloadavg");
  70. #endif
  71.     return result;
  72. }
  73.